package com.ruoyi.common.utils;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class RenameImages {

    public static void main(String[] args) {
        // 设置根目录，开始遍历
        String rootDirectory = "E:\\BaiduNetdiskDownload\\实物线稿\\水彩样例-工具"; // 替换为你的文件夹路径
        File rootDir = new File(rootDirectory);

        // 调用遍历文件夹的方法
        renameAndConvertFilesInDirectory(rootDir);
    }

    public static void renameAndConvertFilesInDirectory(File directory) {
        // 判断是否为目录
        if (directory.isDirectory()) {
            // 获取该目录下所有文件和文件夹
            File[] files = directory.listFiles();
            if (files != null) {
                int counter = 0; // 文件计数器

                // 遍历所有文件
                for (File file : files) {
                    if (file.isDirectory()) {
                        // 如果是文件夹，递归调用
                        renameAndConvertFilesInDirectory(file);
                    } else {
                        // 如果是文件，检查是否是图片（根据文件扩展名）
                        if (isImageFile(file)) {
                            // 获取文件夹名称作为新的文件名的前缀
                            String newFileName = directory.getName() + "_" + counter + ".jpg";
                            File renamedFile = new File(file.getParent(), newFileName);

                            // 尝试将文件转换为 .jpg 格式并重命名
                            try {
                                BufferedImage image = ImageIO.read(file);
                                boolean success = ImageIO.write(image, "jpg", renamedFile);
                                if (success) {
                                    // 删除原始图片
                                    file.delete();
                                    System.out.println("文件 " + file.getName() + " 已转换并重命名为 " + renamedFile.getName());
                                } else {
                                    System.out.println("图片转换失败: " + file.getName());
                                }
                            } catch (IOException e) {
                                System.out.println("读取或写入图片时发生错误: " + file.getName());
                            }

                            counter++; // 增加计数器
                        }
                    }
                }
            }
        }
    }

    // 判断是否是图片文件
    public static boolean isImageFile(File file) {
        String fileName = file.getName().toLowerCase();
        return fileName.endsWith(".jpg") || fileName.endsWith(".jpeg") || fileName.endsWith(".png") || fileName.endsWith(".bmp") || fileName.endsWith(".gif");
    }
}

